library(tidyverse)
library(lubridate)
library(forecast)
library(ggrepel)
library(rvest)
library(plotly)
library(xtable)
dja <- read_csv("data/DJA.csv",skip = 4)
gold <- read_csv("data/GOLD_1791-2018.csv",skip = 3)
interest_rate <- read_csv("data/INTERESTRATE_1857-2018.csv",skip = 1)
sap <- read_csv("data/SAP_1871-2018.csv", skip=1)
cpi <- read_csv("data/USCPI_1774-2018.csv", skip=4)
gdp <- read_csv("data/USGDP_1790-2018.csv", skip=2)
wage <- read_csv("data/USWAGE_1774-2018.csv", skip=3)
gdp_uk <- read_csv("data/UKGDP_1700-2017.csv", skip=1)
brit_gold <- read_csv("data/GOLD_brit_1257-1945.csv", skip=1)
gold_london <- read_csv("data/GOLD_london_1718-2017.csv", skip = 1)
el dja es una serie diaria, todas las demás son anuales.
dja <- dja %>%
mutate(Date = parse_date_time(Date,orders = "mdy"))
ggplotly(ggplot(dja,aes(Date, DJIA))+
geom_line()) %>%
layout(legend = list(
orientation = "h"))
summary(dja)
Date DJIA
Min. :1885-05-02 00:00:00 Min. : 24.36
1st Qu.:1916-02-09 06:00:00 1st Qu.: 70.41
Median :1946-10-14 12:00:00 Median : 199.28
Mean :1949-03-11 07:36:39 Mean : 2354.03
3rd Qu.:1982-06-06 06:00:00 3rd Qu.: 1002.07
Max. :2018-09-10 00:00:00 Max. :26616.71
dja %>%
mutate(dif = (DJIA - lag(DJIA, default = DJIA[1]))/lag(DJIA, default = DJIA[1])) %>%
ggplot(.,aes(Date, dif))+
geom_rect(fill="firebrick",
xmin=parse_date_time("01-01-1930",orders = "mdy"),
xmax=parse_date_time("01-01-1940",orders = "mdy"),
ymin=-1,
ymax=1,
alpha=0.5)+
geom_line()
armo una lista de las crisis conocidas
url <- "https://www.caproasia.com/2016/04/12/economic-crisis-since-1900-2015/"
crisis <- url %>%
read_html() %>%
html_nodes(css = 'table') %>%
html_table(header = T)
crisis <- crisis[[1]] %>%
filter(Affected %in% c("United States","Global")) %>%
separate(Period,c("desde","hasta")," – ")
Expected 2 pieces. Missing pieces filled with `NA` in 10 rows [1, 4, 5, 6, 7, 8, 9, 10, 11, 12].
#en realidad las que terminan en "s" no duran toda la década. Las agrego a mano.
# mutate(hasta = parse_date_time(case_when(grepl("s",desde)~as.numeric(str_extract(desde,"[[:digit:]]*"))+10,
# TRUE~ as.numeric(hasta)),"y"),
# desde = parse_date_time(str_extract(desde,"[[:digit:]]*"),"y"))
crisis <- crisis %>%
mutate(hasta = parse_date_time(case_when(desde=="1970s"~"1979",
desde=="1980s"~"1982",
desde == "1990s"~"1991",
TRUE~hasta),"y"),
desde = parse_date_time(case_when(desde=="1970s"~"1973",
desde=="1980s"~"1981",
desde=="1990s"~"1990",
TRUE~desde),"y"))
# tabla <- crisis[[1]] %>%
# filter(Affected %in% c("United States","Global")) %>%
# select(-Region, - Affected) %>%
# xtable(.)
#En la consola
# print(tabla, include.rownames = F)
crisis_largas <- na.omit(crisis)
crisis_puntuales <- crisis %>%
filter(is.na(hasta))
dja <- dja %>%
mutate(dif = (DJIA - lag(DJIA, default = DJIA[1]))/lag(DJIA, default = DJIA[1]))
ggplot()+
geom_rect(data= crisis_largas,
aes(xmin=crisis_largas$desde,
xmax=crisis_largas$hasta),
fill="firebrick",
ymin=-1,
ymax=1,
alpha=0.5)+
geom_line(data = dja,aes(Date, dif))+
geom_vline(data=crisis_puntuales, aes(xintercept=desde), color = "red", linetype="dashed")
NA
Este gráfico me da la sensación de que todo estuviera corrido a la derecha (mirando las crisis puntuales vs los picos)
gold %>%
ggplot(., aes(Year, `New York Market Price (U.S. dollars per fine ounce)`))+
geom_line(size=1)+
geom_vline(xintercept = 1971, color = "red")+
geom_label_repel(data=data_frame(),aes(x=1971,y=1000,label="Fin del patrón oro"),nudge_x = -5,force=10,size=7)+
theme_minimal()+
labs(y="Dólares por onza de oro", x="Año", title="Precios del oro por onza en el mercado de Nueva York")+
theme(text = element_text(size = 20))
ggsave("plots/oro.png", dpi=300, width = 10, height = 7, scale=1)
graf <- interest_rate %>%
gather(type,rate,2:4) %>%
ggplot(., aes(Year,rate,color=type))+
geom_line()+
guides(color=guide_legend(nrow=2,byrow=TRUE))+
theme(legend.position = "bottom")
ggplotly(graf) %>%
layout(legend = list(
orientation = "h"
)
)
sap %>%
summary()
Year The S&P Index Average for January Annual Yield
Min. :1871 Min. : 3.240 Min. :1.140
1st Qu.:1908 1st Qu.: 7.433 1st Qu.:3.310
Median :1944 Median : 16.430 Median :4.500
Mean :1944 Mean : 261.888 Mean :4.356
3rd Qu.:1981 3rd Qu.: 122.058 3rd Qu.:5.390
Max. :2018 Max. :2791.730 Max. :8.710
NA's :1
The Accumulated S&P Index Average for January
Min. : 1.0
1st Qu.: 11.5
Median : 122.0
Mean : 21442.8
3rd Qu.: 5360.0
Max. :298189.7
sap %>%
gather(type, value,2:4) %>%
mutate(type= case_when(type=="The S&P Index Average for January"~"The S&P Index\nAverage for January",
type=="The Accumulated S&P Index Average for January"~"The Accumulated S&P\nIndex Average for January",
TRUE~type)) %>%
ggplot(.,aes(Year,value, color=type))+
geom_line()+
facet_grid(type~.,scale="free")+
theme(legend.position = "bottom",
strip.text.y = element_text(angle = 0))
ts(sap$`Annual Yield`, start=min(sap$Year), frequency = 1) %>%
na.omit() %>%
auto.arima(.)
Series: .
ARIMA(0,1,2)
Coefficients:
ma1 ma2
-0.0141 -0.3007
s.e. 0.0802 0.0810
sigma^2 estimated as 0.4111: log likelihood=-141.37
AIC=288.73 AICc=288.9 BIC=297.68
cpi %>%
ggplot(., aes(Year, `U.S. Consumer Price Index *`))+
geom_line(size=1)+
geom_vline(xintercept = 1971, color = "red")+
geom_label_repel(data=data_frame(),aes(x=1971,y=100,label="Fin del patrón oro"),nudge_x = -5,force=10,size=7)+
theme_minimal()+
labs(y="IPC", x="Año")+
theme(text = element_text(size = 20))
ggsave("plots/cpi_orig.png", scale = 1)
Saving 7.29 x 4.5 in image
gdp %>%
ggplot(., aes(Year, `Real GDP (millions of 2012 dollars)`))+
geom_line(size=1)+
# geom_vline(xintercept = 1971, color = "red")+
# geom_label_repel(data=data_frame(),aes(x=1971,y=100,label="Fin del patrón oro"),nudge_x = -5,force=10,size=7)+
theme_minimal()+
labs(y="Real GDP", x="Año")+
theme(text = element_text(size = 30))
ggsave("plots/PBI.png", scale = 1)
Saving 7.29 x 4.5 in image
me interesa ver el PBI normalizado por el crecimiento poblacional, y además normalizado por la cantidad de oro que puede comprar (en lugar de normalizar por el CPI):
gdp <- left_join(gold, gdp, by = "Year") %>%
mutate(gdp_in_gold = `Nominal GDP per capita (current dollars)`/`New York Market Price (U.S. dollars per fine ounce)`,
Year = parse_date_time(Year,"y"))
ggplotly(ggplot(gdp,aes(Year,gdp_in_gold))+
geom_line())
A partir del 1900 pareciera que se arman 3 ciclos muy largos
Agregando referencias históricas de las crisis conocidas
library(scales) # to access breaks/formatting functions
ggplot()+
geom_rect(data= crisis_largas,
aes(xmin=crisis_largas$desde,
xmax=crisis_largas$hasta),
fill="firebrick",
ymin=-Inf,
ymax=Inf,
alpha=0.5)+
geom_line(size=1,
data = gdp %>%
filter(Year>parse_date_time(1900,"y"))
,aes(Year, gdp_in_gold))+
geom_vline(data=crisis_puntuales, aes(xintercept=desde), color = "red", linetype="dashed")+
geom_vline(xintercept = parse_date_time(1971,"y"),color = "gold")+ #fin del patron oro
scale_x_datetime(date_breaks = "15 years",labels = date_format("%Y") )+
theme_minimal()+
labs(x="", y="PBI en oro", title="PBI Estados Unidos",
subtitle= "Millones de onzas de oro, 1900-2017")+
theme(text = element_text(size = 20))
ggsave("plots/gdp_in_gold_eda.PNG", dpi = 300, width = 10,height = 6)
La guerra de sesesión de EEUU fué entre el 12 de abril de 1861 y el 9 de abril de 1865
A partir de ahà el pbi en oro crece hasta el fin del patron oro.
wage %>%
summary()
Year Costs of Unskilled Labor (index 1860 = 100)
Min. :1774 Min. : 31.00
1st Qu.:1835 1st Qu.: 79.65
Median :1896 Median : 143.50
Mean :1896 Mean : 2499.49
3rd Qu.:1956 3rd Qu.: 1682.75
Max. :2017 Max. :19640.40
Production Workers Hourly Compensation (nominal dollars)
Min. : 0.020
1st Qu.: 0.060
Median : 0.150
Mean : 3.906
3rd Qu.: 2.555
Max. :32.390
NA's :16
Podemos deflactar el salario horario por el CPI
ggplotly(
wage %>%
left_join(cpi,by="Year") %>%
na.omit() %>%
mutate(salario_horario_real = `Production Workers Hourly Compensation (nominal dollars)`/`U.S. Consumer Price Index *`) %>%
ggplot(.,aes(Year,salario_horario_real))+
geom_line()
)
El salario real tiene una tendencia creciente hasta el 78’ y allà se estanca hasta el 2013
wg_gold <- wage %>%
filter(Year>=1900) %>%
left_join(gold, gdp, by = "Year") %>%
mutate(wg_in_gold = `Production Workers Hourly Compensation (nominal dollars)`/`New York Market Price (U.S. dollars per fine ounce)`,
Year = parse_date_time(Year,"y")) %>%
na.omit()
ggplot()+
geom_rect(data= crisis_largas,
aes(xmin=crisis_largas$desde,
xmax=crisis_largas$hasta),
fill="firebrick",
ymin=-Inf,
ymax=Inf,
alpha=0.5)+
geom_line(size=1,data = wg_gold, aes(Year, wg_in_gold))+
geom_vline(data=crisis_puntuales, aes(xintercept=desde), color = "red", linetype="dashed")+
geom_vline(xintercept = parse_date_time(1971,"y"),color = "gold")+ #fin del patron oro
scale_x_datetime(date_breaks = "15 years",labels = date_format("%Y") )+
theme_minimal()+
labs(x="", y="Salario en oro", title="Salario horario Estados Unidos",
subtitle="Onzas de oro, 1900-2017")+
theme(text = element_text(size = 20))
ggsave("plots/wg_in_gold_eda.PNG", dpi = 300, width = 10,height = 6)
Se ven los mismos tres perÃodos. Pero a diferencia del GDP, el perÃodo 1980-2012 tiene un nivel más bajo que el anterior.
¿ Si quisieramos comparar ingrsos con algún revenue tendrÃamos usar S&P o DJA?
oro <- full_join(brit_gold,gold_london)
Joining, by = "Year"
names(oro)
[1] "Year"
[2] "British Official Price (British pounds per fine ounce end of year)"
[3] "London Market Price (British £ [1718-1949] or U.S. $ [1950-2011] per fine ounce)"
# de http://fx.sauder.ubc.ca/data.html
tc <- read_csv("data/ex_rate.csv")
Parsed with column specification:
cols(
`MMM YYYY` = col_character(),
`GBP/USD` = col_double()
)
library(lubridate)
tc <- tc %>% mutate(date = parse_date_time(`MMM YYYY`,"my"),
Year = year(date)) %>%
group_by(Year) %>%
summarise(gbp_usd = mean(`GBP/USD`))
# de http://fx.sauder.ubc.ca/etc/USDpages.pdf
tc_1950_1970 <- data_frame(Year=1950:1970, gbp_usd = 0.35714) %>%
mutate(gbp_usd = case_when(Year ==1967 ~ 0.36210,
Year >1967 ~ 0.41667,
TRUE ~ gbp_usd))
tc <- bind_rows(tc_1950_1970,tc)
tc
expreso al oro siempre en pounds
tail(oro)
oro$`London Market Price (British £ [1718-1949] or U.S. $ [1950-2011] per fine ounce)`
[1] NA NA NA NA NA NA NA NA NA NA NA NA
[13] NA NA NA NA NA NA NA NA NA NA NA NA
[25] NA NA NA NA NA NA NA NA NA NA NA NA
[37] NA NA NA NA NA NA NA NA NA NA NA NA
[49] NA NA NA NA NA NA NA NA NA NA NA NA
[61] NA NA NA NA NA NA NA NA NA NA NA NA
[73] NA NA NA NA NA NA NA NA NA NA NA NA
[85] NA NA NA NA NA NA NA NA NA NA NA NA
[97] NA NA NA NA NA NA NA NA NA NA NA NA
[109] NA NA NA NA NA NA NA NA NA NA NA NA
[121] NA NA NA NA NA NA NA NA NA NA NA NA
[133] NA NA NA NA NA NA NA NA NA NA NA NA
[145] NA NA NA NA NA NA NA NA NA NA NA NA
[157] NA NA NA NA NA NA NA NA NA NA NA NA
[169] NA NA NA NA NA NA NA NA NA NA NA NA
[181] NA NA NA NA NA NA NA NA NA NA NA NA
[193] NA NA NA NA NA NA NA NA NA NA NA NA
[205] NA NA NA NA NA NA NA NA NA NA NA NA
[217] NA NA NA NA NA NA NA NA NA NA NA NA
[229] NA NA NA NA NA NA NA NA NA NA NA NA
[241] NA NA NA NA NA NA NA NA NA NA NA NA
[253] NA NA NA NA NA NA NA NA NA NA NA NA
[265] NA NA NA NA NA NA NA NA NA NA NA NA
[277] NA NA NA NA NA NA NA NA NA NA NA NA
[289] NA NA NA NA NA NA NA NA NA NA NA NA
[301] NA NA NA NA NA NA NA NA NA NA NA NA
[313] NA NA NA NA NA NA NA NA NA NA NA NA
[325] NA NA NA NA NA NA NA NA NA NA NA NA
[337] NA NA NA NA NA NA NA NA NA NA NA NA
[349] NA NA NA NA NA NA NA NA NA NA NA NA
[361] NA NA NA NA NA NA NA NA NA NA NA NA
[373] NA NA NA NA NA NA NA NA NA NA NA NA
[385] NA NA NA NA NA NA NA NA NA NA NA NA
[397] NA NA NA NA NA NA NA NA NA NA NA NA
[409] NA NA NA NA NA NA NA NA NA NA NA NA
[421] NA NA NA NA NA NA NA NA NA NA NA NA
[433] NA NA NA NA NA NA NA NA NA NA NA NA
[445] NA NA NA NA NA NA NA NA NA NA NA NA
[457] NA NA NA NA NA 4.31 4.26 4.31 4.26 4.25 4.26 4.25
[469] 4.25 4.25 4.25 4.28 4.30 4.29 4.26 4.26 4.27 4.26 4.28 4.26
[481] 4.26 4.26 4.25 4.25 4.27 4.28 4.30 4.31 4.29 4.25 4.28 4.26
[493] 4.25 4.26 4.25 4.26 4.27 4.25 4.25 4.25 4.25 4.30 4.33 4.30
[505] 4.35 4.32 4.37 4.26 4.26 4.31 4.34 4.32 4.38 4.37 4.35 4.35
[517] 4.25 4.24 4.23 4.23 4.23 4.23 4.23 4.23 4.23 4.23 4.25 4.25
[529] 4.24 4.23 4.23 4.23 4.23 4.23 4.23 4.23 4.23 4.23 4.23 4.23
[541] 4.23 4.25 4.24 4.26 4.29 4.31 4.34 4.36 4.36 4.42 4.47 4.52
[553] 4.58 4.63 5.19 5.48 5.76 5.21 4.99 4.36 4.33 4.44 4.36 4.25
[565] 4.25 4.24 4.23 4.23 4.24 4.23 4.23 4.23 4.24 4.24 4.25 4.24
[577] 4.24 4.24 4.24 4.24 4.24 4.24 4.25 4.24 4.24 4.24 4.24 4.24
[589] 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24
[601] 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24
[613] 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24
[625] 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.25 4.25
[637] 4.25 4.24 4.24 4.25 4.25 4.25 4.24 4.25 4.25 4.24 4.25 4.25
[649] 4.24 4.25 4.25 4.25 4.24 4.24 4.24 4.24 4.24 4.24 4.24 4.24
[661] 4.24 4.24 4.50 5.65 5.35 4.67 4.51 4.69 4.27 4.25 4.25 4.25
[673] 4.25 4.25 4.63 5.90 6.24 6.88 7.11 7.01 7.04 7.13 7.72 8.40
[685] 8.40 8.40 8.40 8.40 8.40 8.40 8.40 8.40 8.40 34.71 34.71 34.71
[697] 34.71 34.96 35.01 35.00 34.95 35.10 35.09 35.28 35.15 35.10 35.09 35.09
[709] 35.13 35.17 35.19 38.69 41.09 35.94 40.80 58.16 97.32 159.26 161.02 124.84
[721] 147.71 193.22 306.68 612.56 460.03 375.67 424.35 360.48 317.28 367.51 446.47 437.05
[733] 381.43 383.47 362.18 343.73 359.77 384.01 384.16 387.69 331.10 294.16 278.64 279.03
[745] 271.04 309.68 363.32 409.17 444.45 603.77 695.39 871.96 972.35 1224.53 1571.52 1668.98
[757] 1411.23 1266.40 1160.06 1250.74 1257.12
oro <- oro %>%
filter(Year %in% c(1700:2017)) %>%
mutate(serie_unificada = case_when(Year < 1718 ~ `British Official Price (British pounds per fine ounce end of year)`,
Year >=1718 ~`London Market Price (British £ [1718-1949] or U.S. $ [1950-2011] per fine ounce)`))
## Tengo que pasar todo a libras, desde 1950 al serie esta en dólares
oro <- oro %>%
left_join(tc) %>%
mutate(serie_unificada = case_when(Year>1950 ~ serie_unificada*gbp_usd,
TRUE ~ serie_unificada))
Joining, by = "Year"
ggplot(oro, aes(Year, serie_unificada))+
geom_line()
gdp_uk <- gdp_uk %>%
left_join(oro) %>%
mutate(gdp_in_gold = `Nominal GDP (million of pounds)`/serie_unificada)
Joining, by = c("Year", "British Official Price (British pounds per fine ounce end of year)", "London Market Price (British £ [1718-1949] or U.S. $ [1950-2011] per fine ounce)", "serie_unificada", "gbp_usd")
crisis <- gdp_uk %>%
filter(Year %in% c(1700:1900)) %>%
mutate(crisis =gdp_in_gold) %>%
filter(Year %in% c(1794,1803, 1812, 1822,1833,1842,1850, 1858, 1868,1879, 1885, 1893))
gdp_uk %>%
filter(Year %in% c(1700:1900)) %>%
ggplot(., aes(Year, gdp_in_gold))+
geom_line(size=1)+
geom_text_repel(data = crisis, aes(Year, crisis,label=Year),nudge_x = 5, nudge_y = -20,force=12,size=4)+
theme_minimal()+
labs(y="PBI en oro", x="Año", title= "Producto Bruto Interno Reino Unido",
subtitle="Millones de onzas de oro. 1700-1900")+
theme(text = element_text(size = 20))
ggsave("plots/uk_gdp.png",scale = 1)
Saving 7.29 x 4.5 in image